
"""
生成器和迭代器：
迭代器是一个对象，实现一个迭代协议，也就是会返回一个next的方法，每一次调用都会返回序列中的下一个值
迭代器是  不等于  死循环   是一个有状态的重复 每一个的操作是基于上一次的结果
学习  第一次懂了 60% 。。。。第二次懂了80....第三次懂了  100%
软件开发   v1.0    v2.0(增加了一些功能)   v3.0是基于v2.0的把呢不能进行优化
"""


# i =0
# while True:
#     print(i)   # 永远输出是0   没有状态的变化

# 可迭代的对象

"""
只要对象实现了__iter__()
方法的就是可以迭代的对象
"""

# print(hasattr([1,2],'__iter__'))  # True  说明是一个可迭代的对象
# print(hasattr(42,'__iter__'))  # False   说明不是一个可以迭代的对象


# 迭代的定义
# 实现了  __iter__()   __next__() 方法的对象
# __iter__()  返回自身
# __next__() 返回下一个值，没有值的时候 抛出stopiteraion


# lst = [10,20,30]
# it = iter(lst)
# print(next(it))
# print(next(it))
# print(next(it))
# print(next(it))   # StopIteration















